﻿using System;

namespace XEvolve.Core.Events
{
    public interface ITopic<EventArguments> where EventArguments : EventArgs
    {
        void Subscribe(Action<EventArguments> handler, Predicate<EventArguments> predicate);
        void Subscribe(Action<EventArguments> handler);
        void Unsubscribe(Action<EventArguments> handler);
        void Publish(EventArguments eventArgs);
    }
}
